/*
Adept MobileRobots Robotics Interface for Applications (ARIA)
Copyright (C) 2004-2005 ActivMedia Robotics LLC
Copyright (C) 2006-2010 MobileRobots Inc.
Copyright (C) 2011-2015 Adept Technology, Inc.
Copyright (C) 2016-2018 Omron Adept Technologies, Inc.

     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.

     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.

     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

If you wish to redistribute ARIA under different terms, contact 
Adept MobileRobots for information about a commercial version of ARIA at 
robots@mobilerobots.com or 
Adept MobileRobots, 10 Columbia Drive, Amherst, NH 03031; +1-603-881-7960
*/
/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 3.0.8
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package com.mobilerobots.Aria;

public class ArVCC4 extends ArPTZ {
  private transient long swigCPtr;

  public ArVCC4(long cPtr, boolean cMemoryOwn) {
    super(AriaJavaJNI.ArVCC4_SWIGUpcast(cPtr), cMemoryOwn);
    swigCPtr = cPtr;
  }

  public static long getCPtr(ArVCC4 obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        AriaJavaJNI.delete_ArVCC4(swigCPtr);
      }
      swigCPtr = 0;
    }
    super.delete();
  }

  public ArVCC4(ArRobot robot, boolean inverted, ArVCC4.CommState commDirection, boolean autoUpdate, boolean disableLED, ArVCC4.CameraType cameraType) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_0(ArRobot.getCPtr(robot), robot, inverted, commDirection.swigValue(), autoUpdate, disableLED, cameraType.swigValue()), true);
  }

  public ArVCC4(ArRobot robot, boolean inverted, ArVCC4.CommState commDirection, boolean autoUpdate, boolean disableLED) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_1(ArRobot.getCPtr(robot), robot, inverted, commDirection.swigValue(), autoUpdate, disableLED), true);
  }

  public ArVCC4(ArRobot robot, boolean inverted, ArVCC4.CommState commDirection, boolean autoUpdate) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_2(ArRobot.getCPtr(robot), robot, inverted, commDirection.swigValue(), autoUpdate), true);
  }

  public ArVCC4(ArRobot robot, boolean inverted, ArVCC4.CommState commDirection) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_3(ArRobot.getCPtr(robot), robot, inverted, commDirection.swigValue()), true);
  }

  public ArVCC4(ArRobot robot, boolean inverted) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_4(ArRobot.getCPtr(robot), robot, inverted), true);
  }

  public ArVCC4(ArRobot robot) {
    this(AriaJavaJNI.new_ArVCC4__SWIG_5(ArRobot.getCPtr(robot), robot), true);
  }

  public boolean power(boolean state) {
    return AriaJavaJNI.ArVCC4_power(swigCPtr, this, state);
  }

  public boolean getPower() {
    return AriaJavaJNI.ArVCC4_getPower(swigCPtr, this);
  }

  public boolean init() {
    return AriaJavaJNI.ArVCC4_init(swigCPtr, this);
  }

  public void reset() {
    AriaJavaJNI.ArVCC4_reset(swigCPtr, this);
  }

  public String getTypeName() {
    return AriaJavaJNI.ArVCC4_getTypeName(swigCPtr, this);
  }

  public boolean isInitted() {
    return AriaJavaJNI.ArVCC4_isInitted(swigCPtr, this);
  }

  public void connectHandler() {
    AriaJavaJNI.ArVCC4_connectHandler(swigCPtr, this);
  }

  public boolean packetHandler(ArBasePacket packet) {
    return AriaJavaJNI.ArVCC4_packetHandler(swigCPtr, this, ArBasePacket.getCPtr(packet), packet);
  }

  public void getRealPanTilt() {
    AriaJavaJNI.ArVCC4_getRealPanTilt(swigCPtr, this);
  }

  public void getRealZoomPos() {
    AriaJavaJNI.ArVCC4_getRealZoomPos(swigCPtr, this);
  }

  public boolean canZoom() {
    return AriaJavaJNI.ArVCC4_canZoom(swigCPtr, this);
  }

  public boolean zoom(int deg) {
    return AriaJavaJNI.ArVCC4_zoom(swigCPtr, this, deg);
  }

  public boolean digitalZoom(int deg) {
    return AriaJavaJNI.ArVCC4_digitalZoom(swigCPtr, this, deg);
  }

  public void addErrorCB(ArFunctor functor, ArListPos.Pos position) {
    AriaJavaJNI.ArVCC4_addErrorCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor, position.swigValue());
  }

  public void remErrorCB(ArFunctor functor) {
    AriaJavaJNI.ArVCC4_remErrorCB(swigCPtr, this, ArFunctor.getCPtr(functor), functor);
  }

  public boolean haltPanTilt() {
    return AriaJavaJNI.ArVCC4_haltPanTilt(swigCPtr, this);
  }

  public boolean haltZoom() {
    return AriaJavaJNI.ArVCC4_haltZoom(swigCPtr, this);
  }

  public boolean panSlew(double deg) {
    return AriaJavaJNI.ArVCC4_panSlew(swigCPtr, this, deg);
  }

  public boolean tiltSlew(double deg) {
    return AriaJavaJNI.ArVCC4_tiltSlew(swigCPtr, this, deg);
  }

  public boolean canSetPanTiltSlew() {
    return AriaJavaJNI.ArVCC4_canSetPanTiltSlew(swigCPtr, this);
  }

  public void preparePacket(ArVCC4Packet packet) {
    AriaJavaJNI.ArVCC4_preparePacket(swigCPtr, this, ArVCC4Packet.getCPtr(packet), packet);
  }

  public int getZoom() {
    return AriaJavaJNI.ArVCC4_getZoom(swigCPtr, this);
  }

  public double getDigitalZoom() {
    return AriaJavaJNI.ArVCC4_getDigitalZoom(swigCPtr, this);
  }

  public boolean canGetRealPanTilt() {
    return AriaJavaJNI.ArVCC4_canGetRealPanTilt(swigCPtr, this);
  }

  public boolean canGetRealZoom() {
    return AriaJavaJNI.ArVCC4_canGetRealZoom(swigCPtr, this);
  }

  public boolean canSetFocus() {
    return AriaJavaJNI.ArVCC4_canSetFocus(swigCPtr, this);
  }

  public boolean autoFocus() {
    return AriaJavaJNI.ArVCC4_autoFocus(swigCPtr, this);
  }

  public boolean manualFocus() {
    return AriaJavaJNI.ArVCC4_manualFocus(swigCPtr, this);
  }

  public boolean focusNear() {
    return AriaJavaJNI.ArVCC4_focusNear(swigCPtr, this);
  }

  public boolean focusFar() {
    return AriaJavaJNI.ArVCC4_focusFar(swigCPtr, this);
  }

  public boolean setAutoFocus(boolean af) {
    return AriaJavaJNI.ArVCC4_setAutoFocus__SWIG_0(swigCPtr, this, af);
  }

  public boolean setAutoFocus() {
    return AriaJavaJNI.ArVCC4_setAutoFocus__SWIG_1(swigCPtr, this);
  }

  public double getPanSlew() {
    return AriaJavaJNI.ArVCC4_getPanSlew(swigCPtr, this);
  }

  public double getMaxPanSlew() {
    return AriaJavaJNI.ArVCC4_getMaxPanSlew(swigCPtr, this);
  }

  public double getMinPanSlew() {
    return AriaJavaJNI.ArVCC4_getMinPanSlew(swigCPtr, this);
  }

  public double getTiltSlew() {
    return AriaJavaJNI.ArVCC4_getTiltSlew(swigCPtr, this);
  }

  public double getMaxTiltSlew() {
    return AriaJavaJNI.ArVCC4_getMaxTiltSlew(swigCPtr, this);
  }

  public double getMinTiltSlew() {
    return AriaJavaJNI.ArVCC4_getMinTiltSlew(swigCPtr, this);
  }

  public int getMaxZoom() {
    return AriaJavaJNI.ArVCC4_getMaxZoom(swigCPtr, this);
  }

  public int getMinZoom() {
    return AriaJavaJNI.ArVCC4_getMinZoom(swigCPtr, this);
  }

  public boolean canGetFOV() {
    return AriaJavaJNI.ArVCC4_canGetFOV(swigCPtr, this);
  }

  public double getFOVAtMaxZoom() {
    return AriaJavaJNI.ArVCC4_getFOVAtMaxZoom(swigCPtr, this);
  }

  public double getFOVAtMinZoom() {
    return AriaJavaJNI.ArVCC4_getFOVAtMinZoom(swigCPtr, this);
  }

  public boolean wasError() {
    return AriaJavaJNI.ArVCC4_wasError(swigCPtr, this);
  }

  public void enableAutoUpdate() {
    AriaJavaJNI.ArVCC4_enableAutoUpdate(swigCPtr, this);
  }

  public void disableAutoUpdate() {
    AriaJavaJNI.ArVCC4_disableAutoUpdate(swigCPtr, this);
  }

  public boolean getAutoUpdate() {
    return AriaJavaJNI.ArVCC4_getAutoUpdate(swigCPtr, this);
  }

  public void setLEDControlMode(int controlMode) {
    AriaJavaJNI.ArVCC4_setLEDControlMode(swigCPtr, this, controlMode);
  }

  public void enableIRLEDs() {
    AriaJavaJNI.ArVCC4_enableIRLEDs(swigCPtr, this);
  }

  public void disableIRLEDs() {
    AriaJavaJNI.ArVCC4_disableIRLEDs(swigCPtr, this);
  }

  public boolean getIRLEDsEnabled() {
    return AriaJavaJNI.ArVCC4_getIRLEDsEnabled(swigCPtr, this);
  }

  public void enableIRFilterMode() {
    AriaJavaJNI.ArVCC4_enableIRFilterMode(swigCPtr, this);
  }

  public void disableIRFilterMode() {
    AriaJavaJNI.ArVCC4_disableIRFilterMode(swigCPtr, this);
  }

  public boolean getIRFilterModeEnabled() {
    return AriaJavaJNI.ArVCC4_getIRFilterModeEnabled(swigCPtr, this);
  }

  public final static class CommState {
    public final static ArVCC4.CommState COMM_UNKNOWN = new ArVCC4.CommState("COMM_UNKNOWN");
    public final static ArVCC4.CommState COMM_BIDIRECTIONAL = new ArVCC4.CommState("COMM_BIDIRECTIONAL");
    public final static ArVCC4.CommState COMM_UNIDIRECTIONAL = new ArVCC4.CommState("COMM_UNIDIRECTIONAL");

    public final int swigValue() {
      return swigValue;
    }

    public String toString() {
      return swigName;
    }

    public static CommState swigToEnum(int swigValue) {
      if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
        return swigValues[swigValue];
      for (int i = 0; i < swigValues.length; i++)
        if (swigValues[i].swigValue == swigValue)
          return swigValues[i];
      throw new IllegalArgumentException("No enum " + CommState.class + " with value " + swigValue);
    }

    private CommState(String swigName) {
      this.swigName = swigName;
      this.swigValue = swigNext++;
    }

    private CommState(String swigName, int swigValue) {
      this.swigName = swigName;
      this.swigValue = swigValue;
      swigNext = swigValue+1;
    }

    private CommState(String swigName, CommState swigEnum) {
      this.swigName = swigName;
      this.swigValue = swigEnum.swigValue;
      swigNext = this.swigValue+1;
    }

    private static CommState[] swigValues = { COMM_UNKNOWN, COMM_BIDIRECTIONAL, COMM_UNIDIRECTIONAL };
    private static int swigNext = 0;
    private final int swigValue;
    private final String swigName;
  }

  public final static class CameraType {
    public final static ArVCC4.CameraType CAMERA_VCC4 = new ArVCC4.CameraType("CAMERA_VCC4");
    public final static ArVCC4.CameraType CAMERA_C50I = new ArVCC4.CameraType("CAMERA_C50I");

    public final int swigValue() {
      return swigValue;
    }

    public String toString() {
      return swigName;
    }

    public static CameraType swigToEnum(int swigValue) {
      if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
        return swigValues[swigValue];
      for (int i = 0; i < swigValues.length; i++)
        if (swigValues[i].swigValue == swigValue)
          return swigValues[i];
      throw new IllegalArgumentException("No enum " + CameraType.class + " with value " + swigValue);
    }

    private CameraType(String swigName) {
      this.swigName = swigName;
      this.swigValue = swigNext++;
    }

    private CameraType(String swigName, int swigValue) {
      this.swigName = swigName;
      this.swigValue = swigValue;
      swigNext = swigValue+1;
    }

    private CameraType(String swigName, CameraType swigEnum) {
      this.swigName = swigName;
      this.swigValue = swigEnum.swigValue;
      swigNext = this.swigValue+1;
    }

    private static CameraType[] swigValues = { CAMERA_VCC4, CAMERA_C50I };
    private static int swigNext = 0;
    private final int swigValue;
    private final String swigName;
  }

}
